package com.jinbooks.entity.customer.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jinbooks.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 客户表 jbx_customer
 *
 * @author wuyan
 * {@code @date} 2023/9/5 15:09
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class CustomerVo extends BaseEntity implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    private String id;

    /**
     * 手机号码
     */
    private String phone;

    /**
     * 手机号码MD5
     */
    private String phoneMd5;

    /**
     * 客户标识（个人身份证号或企业营业执照信用码）需加密或脱敏
     */
    private String identifier;

    /**
     * 客户标识（明文）MD5
     */
    private String identifierMd5;

    /**
     * (明文手机号码+明文客户标识)MD5
     */
    private String phoneIdentifierMd5;

    /**
     * 客户类型：个人、企业
     */
    private String customerType;

    /**
     * 所属行业
     */
    private String industry;
    
    // 居住地址相关字段

    /**
     * 居住省份
     */
    private String province;

    /**
     * 居住省份编码
     */
    private String provinceCode;

    /**
     * 居住城市
     */
    private String city;

    /**
     * 居住城市编码
     */
    private String cityCode;

    /**
     * 居住区县
     */
    private String district;

    /**
     * 居住区县编码
     */
    private String districtCode;

    /**
     * 居住地址信息
     */
    private String address;

    /**
     * 电子邮箱
     */
    private String email;

    /**
     * 官网网址
     */
    private String website;

    /**
     * 备注
     */
    private String content;

    /**
     * 税号
     */
    private String taxNumber;
    
    /**
     * 税务联系人
     */
    private String taxContact;
    
    /**
     * 开户银行
     */
    private String taxBank;
    
    /**
     * 账户名称
     */
    private String taxBankAccount;
    
    /**
     * 银行账号
     */
    private String taxBankAccountNumber;

    /**
     * 最近购买时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime lastPurchaseTime;

    /**
     * 购买频次
     */
    private Integer purchaseFrequency;

    /**
     * 累计消费金额
     */
    private BigDecimal totalSpending;

    /**
     * 服务满意度(1-5)
     */
    private Integer serviceSatisfaction;

    /**
     * 客户分组ID
     */
    private String segmentId;

    /**
     * 客户分组名称
     */
    private String segmentName;

    /**
     * 客户负责人
     */
    private String customerHead;

    /**
     * 来源渠道
     */
    private String customerFrom;

    /**
     * 来源商户编号
     */
    private String merchantCode;

    /**
     * 来源商户名称
     */
    private String merchantName;

    // 公司相关字段

    /**
     * 公司名称
     */
    private String companyName;

    /**
     * 公司所在省
     */
    private String companyProvince;

    /**
     * 公司所在省编码
     */
    private String companyProvinceCode;

    /**
     * 公司所在市
     */
    private String companyCity;

    /**
     * 公司所在市编码
     */
    private String companyCityCode;

    /**
     * 公司所在区县
     */
    private String companyDistrict;

    /**
     * 公司所在区县编码
     */
    private String companyDistrictCode;

    /**
     * 公司详细地址
     */
    private String companyAddress;

    /**
     * 公司电话
     */
    private String companyTel;

    /**
     * 公司性质
     */
    private String companyNature;

    /**
     * 公司行业
     */
    private String companyIndustry;

    /**
     * 婚姻类型
     */
    private String maritalStatus;

    /**
     * 教育程度
     */
    private String education;

    /**
     * 住房类型
     */
    private String housingType;

    /**
     * 收入类型
     */
    private String incomeType;

    // 证件相关字段

    /**
     * 身份证人像面图片URL
     */
    private String idCardFrontImage;

    /**
     * 身份证国徽面图片URL
     */
    private String idCardBackImage;

    /**
     * 营业执照图片URL
     */
    private String businessLicenseImage;

    // 人脸相关字段

    /**
     * 人脸识别图片URL
     */
    private String faceImage;

    /**
     * 人脸识别得分
     */
    private String faceScore;

    /**
     * 人脸识别得分API服务端返回
     */
    private String faceScoreApi;

    /**
     * 人脸识别结果 PASS-通过 NOPASS-不通过
     */
    private String faceStatus;

    /**
     * 人脸识别结果描述
     */
    private String faceMsg;

    /**
     * 人脸识别时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime faceTime;

    /**
     * 身份证姓名
     */
    private String idCardName;

    /**
     * 身份证性别
     */
    private String idCardGender;

    /**
     * 身份证民族
     */
    private String idCardNation;

    /**
     * 身份证出生日期
     */
    private LocalDate idCardBirth;

    /**
     * 身份证地址
     */
    private String idCardAddress;

    /**
     * 身份证签发机关
     */
    private String idCardIssueAuthority;

    /**
     * 身份证有效日期
     */
    private LocalDate idCardValidDate;

    /**
     * 营业执照企业名称
     */
    private String businessLicenseName;

    /**
     * 营业执照统一社会信用代码
     */
    private String businessLicenseCreditCode;

    /**
     * 营业执照法人
     */
    private String businessLicenseLegalPerson;

    /**
     * 营业执照注册资本
     */
    private String businessLicenseRegCapital;

    /**
     * 营业执照成立日期
     */
    private LocalDate businessLicenseEstablishDate;

    /**
     * 营业执照营业期限
     */
    private String businessLicenseValidPeriod;

    /**
     * 营业执照省
     */
    private String businessLicenseProvince;

    /**
     * 营业执照省编码
     */
    private String businessLicenseProvinceCode;

    /**
     * 营业执照市
     */
    private String businessLicenseCity;

    /**
     * 营业执照市编码
     */
    private String businessLicenseCityCode;

    /**
     * 营业执照区县
     */
    private String businessLicenseDistrict;

    /**
     * 营业执照区县编码
     */
    private String businessLicenseDistrictCode;

    /**
     * 营业执照住所
     */
    private String businessLicenseAddress;

    /**
     * 微信号
     */
    private String wechat;

}
